#!/usr/bin/env python3
"""
脚本名称：21_exe.py
面试描述：Python 多进程代替多线程？
考察点: 由于 GIL 的限制，如果需要真正的并行执行，可以考虑使用 multiprocessing模块。multiprocesing模块通过创建多个进程来绕过
GIL，从而实现并行执行。
生活比喻：
作者：Gavin
创建日期：2025-05-29
版本：1.0
依赖库：无
使用方法： python 21_exe.py
"""
from multiprocessing import Process
import time


def print_numbers():
    for i in range(5):
        print(f'Number: {i}')
        time.sleep(1)


def print_letters():
    for letter in 'abcde':
        print(f'Letter: {letter}')
        time.sleep(1)


# 兼容性：在 Windows 系统上，多进程代码必须放在 if __name__ == '__main__': 块中，否则可能会导致递归创建进程的问题
if __name__ == '__main__':
    # 创建进程
    process1 = Process(target=print_numbers)
    process2 = Process(target=print_letters)

    # 启动进程
    process1.start()
    process2.start()

    # 等待进程结束
    process1.join()
    process2.join()

    print('Done.')
